package issr.market.controller;

import issr.market.model.Lotto;
import issr.market.services.CheckRicevutaService;
import issr.market.services.GestioneProdottiService;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;

@Results({
@Result(name = "login", type = "redirectAction", params = {
		"actionName", "login" }),
@Result(name = "ricevutaEsitoOk", type = "redirect", location = "fragment/ricevutaEsitoOk.jspf"),
@Result(name = "ricevutaEsitoWrong", type = "redirect", location = "fragment/ricevutaEsitoWrong.jspf")
})
public class ReclamiController extends AbstractController {

	private static final long serialVersionUID = -6595168414725554560L;
	private static final Logger logger = Logger.getLogger(ReclamiController.class);
	
	private Integer step;
	private String checkEmissione;
	private List<Lotto> lottiTrovati;
	private Map<String, Integer> qProdottiMap;
	
	private List<Lotto> model = new ArrayList<Lotto>();
	
	private String[] idProdotti;
	private String[] idLotti;
	private String[] nomiProdotti;
	private String[] qProdotti;
	private String[] dateScadenza;
	private String[] prezzi;
	
	private String idRicevuta;
	
	
	public HttpHeaders index(){
		
		if(accessForbidden())
			return new DefaultHttpHeaders("login")
				.disableCaching();
		
		return super.index();
	}
	
	public HttpHeaders create(){
		
		if(step==null) step = 1;
		logger.info("Avvio restituzione prodotti");
		lottiTrovati = new ArrayList<Lotto>();
		qProdottiMap = new HashMap<String, Integer>();
		step = GestioneProdottiService.restituzioneProdotti(idLotti, idProdotti, qProdotti, nomiProdotti, 
				prezzi, dateScadenza, lottiTrovati, qProdottiMap, checkEmissione, step);
		
		return index();
		
	}
	
	public String update() {
		
		logger.info("Procedura check ricevuta");
		return CheckRicevutaService.checkRicevuta(idRicevuta);
		
	}


	public Integer getStep() {
		return step;
	}


	public void setStep(Integer step) {
		this.step = step;
	}


	public String getCheckEmissione() {
		return checkEmissione;
	}


	public void setCheckEmissione(String checkEmissione) {
		this.checkEmissione = checkEmissione;
	}


	public List<Lotto> getLottiTrovati() {
		return lottiTrovati;
	}


	public void setLottiTrovati(List<Lotto> lottiTrovati) {
		this.lottiTrovati = lottiTrovati;
	}


	public Map<String, Integer> getqProdottiMap() {
		return qProdottiMap;
	}


	public void setqProdottiMap(Map<String, Integer> qProdottiMap) {
		this.qProdottiMap = qProdottiMap;
	}


	public String[] getIdProdotti() {
		return idProdotti;
	}


	public void setIdProdotti(String[] idProdotti) {
		this.idProdotti = idProdotti;
	}


	public String[] getIdLotti() {
		return idLotti;
	}


	public void setIdLotti(String[] idLotti) {
		this.idLotti = idLotti;
	}


	public String[] getNomiProdotti() {
		return nomiProdotti;
	}


	public void setNomiProdotti(String[] nomiProdotti) {
		this.nomiProdotti = nomiProdotti;
	}


	public String[] getQProdotti() {
		return qProdotti;
	}


	public void setQProdotti(String[] qProdotti) {
		this.qProdotti = qProdotti;
	}


	public String[] getDateScadenza() {
		return dateScadenza;
	}


	public void setDateScadenza(String[] dateScadenza) {
		this.dateScadenza = dateScadenza;
	}


	public String[] getPrezzi() {
		return prezzi;
	}


	public void setPrezzi(String[] prezzi) {
		this.prezzi = prezzi;
	}


	public String getIdRicevuta() {
		return idRicevuta;
	}


	public void setIdRicevuta(String idRicevuta) {
		this.idRicevuta = idRicevuta;
	}

	public Object getModel(){
		return (lottiTrovati!=null)?lottiTrovati:model;
	}
}
